package org.jsola.hr.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.jsola.core.vo.BaseVO;
import org.jsola.hr.dto.SocProgItemDTO;
import org.jsola.hr.entity.SocProgItemDO;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import static org.jsola.core.example.BaseExample.E_GMT_CREATE;
import static org.jsola.core.example.BaseExample.E_GMT_MODIFIED;
import static org.jsola.core.example.BaseExample.E_ID;
import static org.jsola.core.example.BaseExample.N_GMT_CREATE;
import static org.jsola.core.example.BaseExample.N_GMT_MODIFIED;
import static org.jsola.core.example.BaseExample.N_ID;
import static org.jsola.hr.example.SocProgExample.*;
import static org.jsola.hr.example.SocProgExample.E_COMPANY_ID;
import static org.jsola.hr.example.SocProgExample.E_DEDUCTIONS_DATE;
import static org.jsola.hr.example.SocProgExample.E_ISSUE;
import static org.jsola.hr.example.SocProgExample.E_ME_ACCOUNT;
import static org.jsola.hr.example.SocProgExample.E_ME_TEMPLATE_ID;
import static org.jsola.hr.example.SocProgExample.E_ONLY_SOC_AMOUNT;
import static org.jsola.hr.example.SocProgExample.E_PAY_PROVIDENT_FUND;
import static org.jsola.hr.example.SocProgExample.E_PF_ACCOUNT;
import static org.jsola.hr.example.SocProgExample.E_PF_TEMPLATE_ID;
import static org.jsola.hr.example.SocProgExample.E_PROG_NAME;
import static org.jsola.hr.example.SocProgExample.E_SERVICE_COST;
import static org.jsola.hr.example.SocProgExample.E_SOC_ACCOUNT;
import static org.jsola.hr.example.SocProgExample.E_SOC_CITY;
import static org.jsola.hr.example.SocProgExample.E_SOC_CITY_NAME;
import static org.jsola.hr.example.SocProgExample.E_SOC_TEMPLATE_ID;
import static org.jsola.hr.example.SocProgExample.E_SOURCE_ID;
import static org.jsola.hr.example.SocProgExample.E_TYPE;
import static org.jsola.hr.example.SocProgExample.N_COMPANY_ID;
import static org.jsola.hr.example.SocProgExample.N_DEDUCTIONS_DATE;
import static org.jsola.hr.example.SocProgExample.N_ISSUE;
import static org.jsola.hr.example.SocProgExample.N_ME_ACCOUNT;
import static org.jsola.hr.example.SocProgExample.N_ME_TEMPLATE_ID;
import static org.jsola.hr.example.SocProgExample.N_ONLY_SOC_AMOUNT;
import static org.jsola.hr.example.SocProgExample.N_PAY_PROVIDENT_FUND;
import static org.jsola.hr.example.SocProgExample.N_PF_ACCOUNT;
import static org.jsola.hr.example.SocProgExample.N_PF_TEMPLATE_ID;
import static org.jsola.hr.example.SocProgExample.N_PROG_NAME;
import static org.jsola.hr.example.SocProgExample.N_SERVICE_COST;
import static org.jsola.hr.example.SocProgExample.N_SOC_ACCOUNT;
import static org.jsola.hr.example.SocProgExample.N_SOC_CITY;
import static org.jsola.hr.example.SocProgExample.N_SOC_CITY_NAME;
import static org.jsola.hr.example.SocProgExample.N_SOC_TEMPLATE_ID;
import static org.jsola.hr.example.SocProgExample.N_SOURCE_ID;
import static org.jsola.hr.example.SocProgExample.N_TYPE;

/**
 * 参保方案表
 *
 * @author zhr
 */
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "【参保方案表】详情展示对象")
@Data
public class SocProgVO extends BaseVO {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(notes = N_ID, example = E_ID)
    private String id;

    @ApiModelProperty(notes = N_DEDUCTIONS_DATE, example = E_DEDUCTIONS_DATE)
    private Integer deductionsDate;

    @ApiModelProperty(notes = N_SERVICE_COST, example = E_SERVICE_COST)
    private BigDecimal serviceCost;

    @ApiModelProperty(notes = N_PROG_NAME, example = E_PROG_NAME)
    private String progName;

    @ApiModelProperty(notes = N_SOURCE_ID, example = E_SOURCE_ID)
    private String sourceId;

    @ApiModelProperty(notes = N_SOC_CITY, example = E_SOC_CITY)
    private String socCity;

    @ApiModelProperty(notes = N_SOC_CITY_NAME, example = E_SOC_CITY_NAME)
    private String socCityName;

    @ApiModelProperty(notes = N_ONLY_SOC_AMOUNT, example = E_ONLY_SOC_AMOUNT)
    private Boolean onlySocAmount;

    @ApiModelProperty(notes = N_PAY_PROVIDENT_FUND, example = E_PAY_PROVIDENT_FUND)
    private Boolean payProvidentFund;

    @ApiModelProperty(notes = N_COMPANY_ID, example = E_COMPANY_ID)
    private String companyId;

    @ApiModelProperty(notes = N_SOC_TEMPLATE_ID, example = E_SOC_TEMPLATE_ID)
    private String socTemplateId;

    @ApiModelProperty(notes = N_ME_TEMPLATE_ID, example = E_ME_TEMPLATE_ID)
    private String meTemplateId;

    @ApiModelProperty(notes = N_PF_TEMPLATE_ID, example = E_PF_TEMPLATE_ID)
    private String pfTemplateId;

    @ApiModelProperty(notes = N_SOC_ACCOUNT, example = E_SOC_ACCOUNT)
    private String socAccount;

    @ApiModelProperty(notes = N_ME_ACCOUNT, example = E_ME_ACCOUNT)
    private String meAccount;

    @ApiModelProperty(notes = N_PF_ACCOUNT, example = E_PF_ACCOUNT)
    private String pfAccount;

    @ApiModelProperty(notes = N_ISSUE, example = E_ISSUE)
    private Boolean issue;

    @ApiModelProperty(notes = N_GMT_CREATE, example = E_GMT_CREATE)
    private Date gmtCreate;

    @ApiModelProperty(notes = N_GMT_MODIFIED, example = E_GMT_MODIFIED)
    private Date gmtModified;

    @ApiModelProperty(notes = N_EMP_COUNT, example = E_EMP_COUNT)
    private Integer empCount;

    @ApiModelProperty(notes = N_SOC_PROG_ITEM_DO_LIST, example = E_SOC_PROG_ITEM_DO_LIST)
    private List<SocProgItemListVO> socProgItemVOList;

    @ApiModelProperty(notes = N_SOC_PROG_ITEM_DO_SOC_LIST, example = E_SOC_PROG_ITEM_DO_SOC_LIST)
    private List<SocProgItemListVO> socProgItemVOSocList;

    @ApiModelProperty(notes = N_SOC_PROG_ITEM_DO_PF_LIST, example = E_SOC_PROG_ITEM_DO_PF_LIST)
    private List<SocProgItemListVO> socProgItemVOPfList;

    @ApiModelProperty(notes = "子项")
    private List<SocProgItemDO> itemList;

    @ApiModelProperty(notes = "社保是否可以退费")
    private Boolean socRefunds;

    @ApiModelProperty(notes = "医保是否可以退费")
    private Boolean meRefunds;

    @ApiModelProperty(notes = "公积金是否可以退费")
    private Boolean pfRefunds;
}

